<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Promise.then</title>
  </head>
  <body>
    <h3>Promise.then方法</h3>
    <script>
      const p = new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve("success");
        }, 1000);
      });

      // 调用the方法 返回的结果是Promise对象，对象状态由回调函数的执行结果决定
      /*
      1.如果回调函数中返回的结果是非Promise类型的值，状态则为resolved，返回值为非Promise类型的值
      2.如果回调函数返回是一个Promise对象，则状态由这个Promise对象决定，返回值也是其resolve或reject结果
      3.如果回调函数抛出错误，则状态为rejected
      */
      //   console.log(p);
      const p1 = p.then(
        value => {
          // 1.非Promise值
          //   console.log(value);
          //   return 123;
          //   2.Promise对象
          //   return Promise.reject(333);
          // 3.抛出错误
          throw "出错了";
        },
        reason => {
          console.error(reason);
        }
      );
      console.log(p1);
    </script>
  </body>
</html>
